#ifndef REPORTSWIDGET_H
#define REPORTSWIDGET_H

#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QLabel>
#include <QFrame>
#include <QPushButton>
#include <QComboBox>
#include <QDateEdit>
#include <QGroupBox>
#include <QScrollArea>
#include <QTimer>
#include <QMessageBox>
#include <QResizeEvent>
#include "databasemanager.h"
#include "simplechartwidget.h"

QT_BEGIN_NAMESPACE
QT_END_NAMESPACE

class ReportsWidget : public QWidget
{
    Q_OBJECT

public:
    ReportsWidget(QWidget *parent = nullptr);
    ~ReportsWidget();

public slots:
    // 刷新所有报表数据
    void refreshReports();
    // 导出统计报表
    void exportReports();

private slots:
    // 时间范围改变时刷新统计数据
    void onDateRangeChanged();
    // 自动刷新定时器
    void onAutoRefresh();

private:
    // 初始化界面
    void initializeUI();
    // 创建概览统计面板
    QWidget* createOverviewPanel();
    // 创建库存统计面板
    QWidget* createInventoryPanel();
    // 创建操作统计面板
    QWidget* createOperationPanel();
    // 创建趋势分析面板
    QWidget* createTrendPanel();
    // 创建统计卡片
    QFrame* createStatCard(const QString& title, const QString& value, const QString& subText = "");
    // 创建圆形卡片
    QFrame* createCircleCard(const QString& rank, const QString& name, const QString& value);
    // 更新概览数据
    void updateOverviewData();
    // 更新库存统计数据
    void updateInventoryData();
    // 更新操作统计数据
    void updateOperationData();
    // 更新趋势数据
    void updateTrendData();
    // 数值格式化函数
    QString formatNumber(int number);
    QString formatDecimal(double number, int precision = 1);
    
protected:
    void resizeEvent(QResizeEvent *event) override;
    
private:
    // 主布局
    QVBoxLayout* m_mainLayout;
    QScrollArea* m_scrollArea;
    QWidget* m_scrollContent;
    
    // 工具栏控件
    QComboBox* m_timeRangeCombo;
    QDateEdit* m_startDateEdit;
    QDateEdit* m_endDateEdit;
    QPushButton* m_refreshBtn;
    QPushButton* m_exportBtn;
    
    // 概览面板统计卡片
    QLabel* m_totalItemsLabel;
    QLabel* m_totalQuantityLabel;
    QLabel* m_monthlyOpsLabel;
    QLabel* m_avgQuantityLabel;
    
    // 库存统计面板
    QLabel* m_topItemsLabel; // 保留，用于向下兼容
    QWidget* m_topItemsContainer; // 圆形卡片容器
    
    // 操作统计面板
    QLabel* m_stockInCountLabel;
    QLabel* m_stockOutCountLabel;
    QLabel* m_userActivityLabel; // 保留，用于向下兼容
    QWidget* m_userActivityContainer; // 圆形卡片容器
    
    // 趋势图表
    SimpleChartWidget* m_stockInChart;
    SimpleChartWidget* m_stockOutChart;
    
    // 定时器
    QTimer* m_refreshTimer;
    
    // 状态管理
    bool m_isUpdating;
};

#endif // REPORTSWIDGET_H